﻿using ST.Torch.WebApi.Core.Entities.System;
using System.Linq.Expressions;


namespace ST.Torch.WebApi.Application;

interface  ISYSMenuService
{
	#region curd
	void Insert(SYSMenu entity);


	Task InsertAsync(SYSMenu entity, string[] Includes = null);

	void Update(SYSMenu entity, string[] Includes = null);

	Task UpdateAsync(SYSMenu entity, string[] Includes = null);

	void Delete(SYSMenu entity, bool IsSoft = false);

	Task DeleteAsync(SYSMenu entity, bool IsSoft = false);
    bool Any(Expression<Func<SYSMenu, bool>> predicate);

    Task<bool> AnyAsync(Expression<Func<SYSMenu, bool>> predicate);

    SYSMenu Single(Expression<Func<SYSMenu, bool>> predicate, bool tracking = false);

	Task<SYSMenu> SingleAsync(Expression<Func<SYSMenu, bool>> predicate, bool tracking = false);

	List<SYSMenu> Query(Expression<Func<SYSMenu, bool>> predicate, bool tracking = false);

	Task<List<SYSMenu>> QueryAsync(Expression<Func<SYSMenu, bool>> predicate, bool tracking = false);


	PagedList<SYSMenu> QueryPage(Expression<Func<SYSMenu, bool>> predicate, PageReq page, bool tracking = false);

	Task<PagedList<SYSMenu>> QueryPageAsync(Expression<Func<SYSMenu, bool>> predicate, PageReq page, bool tracking = false);
	




	#endregion
}
